package com.suke.czx.modules.file.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.suke.czx.common.utils.OssUtil;
import com.suke.czx.common.utils.R;
import com.suke.czx.modules.file.entity.File;
import com.suke.czx.modules.file.mapper.FileMapper;
import com.suke.czx.modules.file.service.FileService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 应用模块名称: 文件
 * 代码描述: 文件业务层
 * copyright: AUZAR ALL RIGHTS RESERVED
 * company: AUZAR
 *
 * @author: 颜米晨
 * @date: 2021/09/07 23:18
 */
@Slf4j
@Service
@AllArgsConstructor
public class FileServiceImpl extends ServiceImpl<FileMapper, File> implements FileService {

    private final FileMapper fileMapper;

    /**
     * 根据文件ids查询文件
     * @param fileIds 文件ids
     * @return 文件url长字符串
     */
    @Override
    public List<File> getFileByIds(String fileIds) {
        return fileMapper.getFileByIds(fileIds);
    }

    /**
     * 上传文件
     * @param file 文件
     * @return 文件url
     */
    @Override
    public String uploadFile(MultipartFile file) {
        InputStream is = null;
        try {
            is =  file.getInputStream();
        } catch (IOException e) {
            log.error("上传文件失败,文件名称:[{}]", file.getOriginalFilename());
        }
        // 调用工具类上传文件
        return OssUtil.executeFileUpload(is, file.getOriginalFilename());
    }

    /**
     * 删除文件
     * @param fileId 文件编码
     * @param userId 操作者编码
     * @return VO
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R updateDelFile(Long fileId, Long userId) {
        fileMapper.updateDelFile(fileId, userId);
        return R.ok();
    }

}
